package com.xhwl.logistics.strategy;

import com.xhwl.common.dto.cent.vehicle.SupplierConfigDTO;
import com.xhwl.common.pojo.cent.device.Device;
import com.xhwl.common.pojo.cent.vehicle.VehcArea;
import com.xhwl.common.pojo.cent.vehicle.VehcParkingLot;
import com.xhwl.common.pojo.cent.vehicle.VehcPassage;

import java.util.List;
import java.util.Map;

/**
 * @description: 同步厂商策略接口
 * @author: lu.Aaron
 * @create: 2021-03-05 11:15
 **/
public interface InfoSyncSupplierStrategy {
    /**
     * 获取不同的供应商
     * @date: 2021/6/29 11:43
     * @param
     * @return int
     */
    int getParkSupplierId();

    /**
     * 获取车场列表
     * @return
     */
    List<VehcParkingLot> getParkingLotList();


    VehcParkingLot getParkingLotInfo(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);
    /**
     * 获取车场区域信息列表
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    List<VehcArea> getParkingLotArea(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 获取车场通道列表
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    List<VehcPassage> getPassageList(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 获取车场设备列表
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    List<Device> getParkingLotDevice(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 添加车辆
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    Map addCar(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 修改车辆
     * @param paramMap
     * @param supplierConfigDTO
     */
    void update(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 查询车辆
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    Map queryCarInfo(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 删除车辆
     * @param paramMap
     * @param supplierConfigDTO
     */
    void delete(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 查询收费方式（根据车卡类型）
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    List<Map> queryChargeWay(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 充值接口
     * @param paramMap
     * @param supplierConfigDTO
     */
    void recharge(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 临停缴费费用查询（app）
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    Map tempParkFeeQuery(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);

    /**
     * 临停缴费
     * @param paramMap
     * @param supplierConfigDTO
     * @return
     */
    Map tempParkRecharge(Map<String, Object> paramMap, SupplierConfigDTO supplierConfigDTO);


}
